package string.leetcode;

/**
 * @author yuisama
 * @date 2022/09/21 15:36
 * 两个字符串的大整数相加，模拟竖式运算
 **/
public class Num415_AddStrings {
    public String addStrings(String num1, String num2) {
        int i = num1.length() - 1,j = num2.length() - 1;
        // 用于进位
        int add = 0;
        StringBuilder sb = new StringBuilder();
        // 避免两个相同位数的进位后的数字被丢掉，因此需要判断add最终是否为非0
        while (i >= 0 || j >= 0 || add != 0) {
            // 超过的位数补0
            int x = i >= 0 ? num1.charAt(i) - '0' : 0;
            int y = j >= 0 ? num2.charAt(j) - '0' : 0;
            // 还要计算低位进位上来的数字
            int result = x + y + add;
            // 每次只保留个位
            sb.append(result % 10);
            // 每次存储进位数字在add中
            add = result / 10;
            i --;
            j --;
        }
        // 最终结果需要转置
        sb.reverse();
        return sb.toString();
    }
}